/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package br.com.deployment.servicoimpl;

import br.com.deployment.entidade.protocolo.Pagamento;
import br.com.deployment.enums.Relatorio;
import br.com.deployment.interfaces.PagamentoDaoIn;
import br.com.deployment.servico.CartorioServico;
import br.com.deployment.servico.PagamentoServico;
import br.com.deployment.utilitario.GeraRelatorio;
import br.com.deployment.utilitario.Msg;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import javax.ejb.EJB;
import javax.ejb.LocalBean;
import javax.ejb.Stateless;

/**
 *
 * @author elyjr
 */
@Stateless
@LocalBean
public class PagamentoServicoImpl implements PagamentoServico{

    @EJB
    PagamentoDaoIn pagamentoDao;
    
    @EJB
    private CartorioServico cartorioServico;
    
    @Override
    public void salvar(Pagamento pagamento, boolean comprovante) {
        try{
            iniciandoValores(pagamento);
            pagamentoDao.save(pagamento);
            if(comprovante){
                gerarComprovante(pagamento);
            }
        }catch(Exception erro){
            Msg.messagemError("Falha ao completar essa transação");
        }
    }

    @Override
    public void atualizar(Pagamento pagamento, boolean comprovante) {
         try{
            pagamentoDao.update(pagamento);
            if(comprovante){
                gerarComprovante(pagamento);
            }
        }catch(Exception erro){
            Msg.messagemError("Falha ao completar essa transação");
        }
    }

    @Override
    public void remover(Pagamento pagamento) {
        throw new UnsupportedOperationException("Not supported yet.");
    }

    @Override
    public Pagamento find(int id) {
        return pagamentoDao.find(id);
    }

    @Override
    public List<Pagamento> pesquisar(Pagamento pagamento) {
        return pagamentoDao.Pesquisar(pagamento);
    }

    @Override
    public List<Pagamento> pagamentos() {
       return pagamentoDao.findAll();
    }
    
    public void iniciandoValores(Pagamento pagamento){
         pagamento.setDataPag(new Date());
         pagamento.setAtivo(Boolean.TRUE);
    }
    
      
      
    public void gerarComprovante(Pagamento pag){
        GeraRelatorio geraRelatorio = new GeraRelatorio();
        
        HashMap<String, Object> parametros;
        parametros = new HashMap<String, Object>();
        parametros.put("recebedor", pag.getInteressado());
        parametros.put("usuario", pag.getExecutante().getNome().toUpperCase());
        parametros.put("cargo", pag.getExecutante().getCargo());
        
        parametros.put("texto", "Eu, "+pag.getInteressado()+", recebi de "
                +pag.getExecutante().getNome()+" a importância de R$ "+pag.getValor()+", referente ao"
                + " pagamento de: "+pag.getDescricao());
            
        parametros = cartorioServico.getCartorioRelatorio(parametros);
        
        geraRelatorio.relatorio(parametros, null, Relatorio.COMPROVANTEPAG);
    }
    
}